package kz.pompei.ifacer.main.toolbar;

import javax.swing.Action;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JToggleButton;
import javax.swing.JToolBar;

import kz.pompei.ifacer.main.ActionManager;
import kz.pompei.ifacer.main.align.AlignFrame;

public class TopToolBar {
  public final JToolBar source = new JToolBar("TopToolBar");
  
  public TopToolBar(ActionManager man, AlignFrame alignFrame) {
    {
      addButton(man.open, "png32x32/ad_03_open.png", "Открыть (Ctrl+O)");
    }
    source.addSeparator();
    {
      addButton(man.save, "png32x32/ac_01_save.png", "Сохранить (Ctrl+S)");
      addButton(man.saveAs, "png32x32/ac_02_save_as.png", "Сохранить как...");
      addButton(man.saveAll, "png32x32/ac_03_save_all.png", "Сохранить всё (Ctrl+Shift+S)");
    }
    source.addSeparator();
    {
      addButton(man.elementTop, "png32x32/aa_01_top.png", "В самый верх");
      addButton(man.elementUpper, "png32x32/aa_02_upper.png", "Выше");
      addButton(man.elementLower, "png32x32/aa_03_lower.png", "Ниже");
      addButton(man.elementBottom, "png32x32/aa_04_bottom.png", "В самый низ");
    }
    source.addSeparator();
    {
      addButton(man.undo, "png32x32/ab_01_undo.png", "Отменить (Ctrl+Z)");
      addButton(man.redo, "png32x32/ab_02_redo.png", "Повторить (Ctrl+Shift+Z)");
    }
    source.addSeparator();
    {
      addButton(man.delete, "png32x32/ad_01_delete.png", "Удалить (Del)");
      addButton(man.cutSelection, "png32x32/af_01_cut.png", "Вырезать (Ctrl+X или Ctrl+Del)");
      addButton(man.copySelection, "png32x32/af_02_copy.png", "Скопировать (Ctrl+C или Ctrl+Ins)");
      addButton(man.paste, "png32x32/af_03_paste.png", "Вставить (Ctrl+V или Shift+Ins)");
    }
    source.addSeparator();
    {
      addButton(man.exportToPng, "png32x32/ad_02_export.png", "Экспорт в PNG (Ctrl+I)");
      addButton(man.deactivateSelected, "png32x32/ag_01_fix.png", "Деактивировать выделенное");
      addButton(man.activateAll, "png32x32/ag_02_unfix_all.png", "Активировать всё");
    }
    source.addSeparator();
    {
      final JToggleButton b = new JToggleButton();
      b.setToolTipText("Выравнивания");
      b.setIcon(new ImageIcon(getClass().getResource("png32x32/ae_05_align_center_vert.png")));
      source.add(b);
      
      alignFrame.setToggleButton(b);
    }
  }
  
  @SuppressWarnings("unused")
  private void addButton(String imageName, String hint) {
    addButton(null, imageName, hint);
  }
  
  private void addButton(Action action, String imageName, String hint) {
    JButton b = action == null ? new JButton() :new JButton(action);
    b.setToolTipText(hint);
    b.setIcon(new ImageIcon(getClass().getResource(imageName)));
    source.add(b);
  }
}
